<?php

/**
 * This is the model class for table "tbl_residencias".
 *
 * The followings are the available columns in table 'tbl_residencias':
 * @property integer $id_residencia
 * @property double $calificacion
 * @property string $aprobado
 * @property string $status
 * @property integer $id_ciclo_escolar
 * @property integer $id_asesorinterno
 * @property integer $id_alumno
 * @property integer $id_asesorexterno
 * @property integer $id_carrera
 * @property string $formato_seguimiento
 * @property string $observacion1
 * @property string $observacion2
 * @property string $observacion3
 * @property integer $id_proyecto
 *
 * The followings are the available model relations:
 * @property TblActividades[] $tblActividades
 * @property TblAsesorias[] $tblAsesoriases
 * @property TblEvaluacion[] $tblEvaluacions
 * @property TblAsesorexterno $idAsesorexterno
 * @property TblCarreras $idCarrera
 * @property TblAlumnos $idAlumno
 * @property TblCiclosEscolares $idCicloEscolar
 * @property TblProfesores $idAsesorinterno
 * @property TblProyectos $idProyecto
 * @property TblRevisiones[] $tblRevisiones
 */
class residencias extends CActiveRecord
{
	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'tbl_residencias';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('id_ciclo_escolar, id_asesorinterno, id_alumno, id_asesorexterno, id_carrera', 'required'),
			array('id_ciclo_escolar, id_asesorinterno, id_alumno, id_asesorexterno, id_carrera, id_proyecto', 'numerical', 'integerOnly'=>true),
			array('calificacion', 'numerical'),
			array('aprobado, status, formato_seguimiento', 'length', 'max'=>1),
			array('observacion1, observacion2, observacion3', 'safe'),
			array('id_proyecto', 'required','message'=>'El proyecto no puede ser nulo'),
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('id_residencia, calificacion, aprobado, status, id_ciclo_escolar, id_asesorinterno, id_alumno, id_asesorexterno, id_carrera, formato_seguimiento, observacion1, observacion2, observacion3, id_proyecto', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'tblActividades' => array(self::HAS_MANY, 'TblActividades', 'id_residencia'),
			'tblAsesoriases' => array(self::HAS_MANY, 'TblAsesorias', 'id_residencia'),
			'tblEvaluacions' => array(self::HAS_MANY, 'TblEvaluacion', 'id_residencia'),
			'idAsesorexterno' => array(self::BELONGS_TO, 'TblAsesorexterno', 'id_asesorexterno'),
			'idCarrera' => array(self::BELONGS_TO, 'TblCarreras', 'id_carrera'),
			'idAlumno' => array(self::BELONGS_TO, 'TblAlumnos', 'id_alumno'),
			'idCicloEscolar' => array(self::BELONGS_TO, 'TblCiclosEscolares', 'id_ciclo_escolar'),
			'idAsesorinterno' => array(self::BELONGS_TO, 'TblProfesores', 'id_asesorinterno'),
			'idProyecto' => array(self::BELONGS_TO, 'TblProyectos', 'id_proyecto'),
			'tblRevisiones' => array(self::HAS_MANY, 'TblRevisiones', 'id_residencia'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id_residencia' => 'Id Residencia',
			'calificacion' => 'Calificacion',
			'aprobado' => 'Aprobado',
			'status' => 'Status',
			'id_ciclo_escolar' => 'Ciclo Escolar',
			'id_asesorinterno' => 'Asesor Interno',
			'id_alumno' => 'Id Alumno',
			'id_asesorexterno' => 'Asesor Externo',
			'id_carrera' => 'Id Carrera',
			'formato_seguimiento' => 'Formato Seguimiento',
			'observacion1' => 'Observacion1',
			'observacion2' => 'Observacion2',
			'observacion3' => 'Observacion3',
			'id_proyecto' => 'Id Proyecto',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 *
	 * Typical usecase:
	 * - Initialize the model fields with values from filter form.
	 * - Execute this method to get CActiveDataProvider instance which will filter
	 * models according to data in model fields.
	 * - Pass data provider to CGridView, CListView or any similar widget.
	 *
	 * @return CActiveDataProvider the data provider that can return the models
	 * based on the search/filter conditions.
	 */
	public function search()
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id_residencia',$this->id_residencia);
		$criteria->compare('calificacion',$this->calificacion);
		$criteria->compare('aprobado',$this->aprobado,true);
		$criteria->compare('status',$this->status,true);
		$criteria->compare('id_ciclo_escolar',$this->id_ciclo_escolar);
		$criteria->compare('id_asesorinterno',$this->id_asesorinterno);
		$criteria->compare('id_alumno',$this->id_alumno);
		$criteria->compare('id_asesorexterno',$this->id_asesorexterno);
		$criteria->compare('id_carrera',$this->id_carrera);
		$criteria->compare('formato_seguimiento',$this->formato_seguimiento,true);
		$criteria->compare('observacion1',$this->observacion1,true);
		$criteria->compare('observacion2',$this->observacion2,true);
		$criteria->compare('observacion3',$this->observacion3,true);
		$criteria->compare('id_proyecto',$this->id_proyecto);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}

	/**
	 * Returns the static model of the specified AR class.
	 * Please note that you should have this exact method in all your CActiveRecord descendants!
	 * @param string $className active record class name.
	 * @return residencias the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	public function getAsesoresInternos()
		{
			
			/*$sql = "SELECT usuarios.usuarios.id_usuario,usuarios.usuarios.nombres,
					usuarios.usuarios.apellidop, usuarios.usuarios.apellidom,dbresidencia.tbl_profesores.activo
					FROM usuarios.usuarios, dbresidencia.tbl_profesores
					WHERE dbresidencia.tbl_profesores.id_asesorinterno=usuarios.usuarios.id_usuario";*/
		 //sql serv

			/*$sql = "SELECT usuariosxii.usuarios.id_usuario,usuariosxii.usuarios.nombres,
					usuariosxii.usuarios.apellidop, usuariosxii.usuarios.apellidom,dbresidencias.tbl_profesores.activo
					FROM usuariosxii.usuarios, dbresidencias.tbl_profesores
					WHERE dbresidencias.tbl_profesores.id_asesorinterno=usuariosxii.usuarios.id_usuario";	*/	
			
								
			$data_profesores = Profesores::model()->findAll();

			$llaves=array();
			foreach ($data_profesores as $row) {
				$llaves[]=$row->id_asesorinterno;


			}
			
			$data_usuariosexternos=UsuariosExternos::model()->findAllByAttributes(array("id_usuario"=>$llaves));	
			$registros= array();

			foreach ($data_usuariosexternos as $row) {
				$item=new Profesores();
				$item->id_asesorinterno=$row->id_usuario;
				$item->nombres=$row->nombres . " ".$row->apellidop." ".$row->apellidom ;
				$item->apellidop=$row->apellidop;
				$item->apellidom=$row->apellidom;
				$item->activo=1;
				$item->id_usuario=$row->id_usuario;

				$registros[]=$item;
			}


			//print_r($registros)	;
			return $registros;
		}
		/*Presenta los proyectos disponibles para acceder a ellos*/
		public function getProyectosDisponibles()
		{
			$rsproyectosinresidencia=residencias::model()->findAll();
			if(!($rsproyectosinresidencia===null))
			{
				$llavesproyectos= array();
				foreach ($rsproyectosinresidencia as $row) {
					$llavesproyectos[]=$row->id_proyecto;
				}
			}
			if(!empty($llavesproyectos))
			{
				$commando = Yii::app()->db->createCommand()
            			->select('*')
            			->from('tbl_proyectos')
            			->where(array('not in', 'id_proyecto', $llavesproyectos));
                     	$dr=$commando->query(); 
						$rows=$dr->readAll();
						
			}
			else
			{
						$commando = Yii::app()->db->createCommand()
            			->select('*')
            			->from('tbl_proyectos');
            				$dr=$commando->query(); 
						$rows=$dr->readAll();
						
			}
			$rsproyectos=array();
			if(!empty($rows))
			{

				foreach ($rows as $row) {
					$item=new Proyectos();
					$item->id_proyecto=$row['id_proyecto'];
					$item->titulo=$row['titulo'];
					$item->id_empresa=$row['id_empresa'];
					$item->id_carrera=$row['id_carrera'];
					$item->descripcion=$row['descripcion'];
					$item->publicado=$row['publicado'];
					$item->disponible=$row['disponible'];
					$rsproyectos[]=$item;


				}
			}
			//print_r($rsproyectos);
			return $rsproyectos;
		}
		
}
